//请求相关

//导入nprogress
import NProgress from 'nprogress'
//导入nprogress的样式
import 'nprogress/nprogress.css'

import { BASE_URL } from '../config/conster.js';

import {$msg_w,$msg_e} from '../utils/msg.js'

//导λaxios
import axios from 'axios'

//初始化一个axios对象
var instance = axios.create({
    //设置请求地址前缓
    baseURL: BASE_URL,
    //请求超时时间
    timeout: 30000,
    //自定义请求头
    // headers:{'token':'foobar'}
});

// 添加请求拦截器
axios.interceptors.request.use(function (config) {
    NProgress.start();
    // 在发送请求之前做些什么
    return config;
}, function (error) {
    NProgress.done()
    // 对请求错误做些什么
    return Promise.reject(error);
});

// 添加响应拦截器
axios.interceptors.response.use(function (response) {
    NProgress.done()
    // 2xx 范围内的状态码都会触发该函数。
    // 对响应数据做点什么 
    return response;
}, function (error) {
    NProgress.done()
    // 超出 2xx 范围的状态码都会触发该函数。
    // 对响应错误做点什么
    return Promise.reject(error);
});

//定义一个get请求方法
export let $get = async (url, params) => {
    let { data } = await instance.get(url, { params })
    return data
}
//定义一post请求方法
export let $post = async(url, params)=> {
    let { data }= await instance.post(url, params)
    if (data.code == 20000000) {
        if(data.message !== '成功'){
            $msg_w(data.message)
        }
    }    
    return data
}

//设置token的方法，该方法，会将浏览器缓存中的token信息，添加到请求头
export let $setToken =()=>{
    //将token信息，保存到请求头中
    instance.defaults.headers.common['token'] = sessionStorage.getItem('token');
}